package MOLE;

import java.util.*;

/** 
 pinyin ��ժҪ˵����
*/
public class pinyin
{
	public pinyin()
	{
		//
		// TODO: �ڴ˴���ӹ��캯���߼�
		//
	}

	private Hashtable ht;

	public static String UnicodeToPinyen(String s)
	{
		String str = UnicodeToCahr(s);
		pinyin o = new pinyin();

		return o.ToPinYin(str);

	}

	public static String UnicodeToCahr(String s)
	{
//C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
			///#region
		s = s.replace("\\u","|");
		String [] a = s.split("[|]", -1);
		String tmp = "";
		String tmpother = "";
		int tmpint;
		String result = "";
		for (int i = 0;i < a.length;i++)
		{
			if (!a[i].equals(""))
			{
				try
				{
					tmp = a[i].substring(0,4);
					tmpother = a[i].substring(4, a[i].length());
					tmpint = (int)(tmp,16);
					if (tmpother.equals(""))
					{
						tmp = " " + (new Character(tmpint)).toString() + tmpother;
					}
					else
					{
						tmp = " " + (new Character(tmpint)).toString() + " " + tmpother;
					}

					result += tmp + "   ";
				}
				catch (RuntimeException ee)
				{
					result += a[i] + "  ";
					continue;
				}

			}
		}
		//			s=a[0].ToString();
		//		
		//			s="5f02";
		//			s=Convert.ToInt32(s,16).ToString();
		//			s=Convert.ToChar( Convert.ToInt32(s) ).ToString();

		//	 s=MOLE.comm.Asc2Str(s);
		s = result;
		return s;
//C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
			///#endregion
	}

	public final String ToPinYin(String s)
	{
		if (ht == null)
		{
			b();
		}
		return c(s);
	}


	private String g(int num)
	{
		if (num < -20319 || num>-10247)
		{
			return "";
		}
		while (!ht.containsKey(num))
		{
			num--;
		}
		return ht.get(num).toString();
	}


	private String c(String hz)
	{
//C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
//ORIGINAL LINE: byte[] b=System.Text.Encoding.Default.GetBytes(hz);
		byte[] b = System.Text.Encoding.Default.GetBytes(hz);
		int p;
		StringBuilder ret = new StringBuilder();
		for (int i = 0;i < b.length;i++)
		{
			p = (int)b[i];
			if (p > 160)
			{
				p = p * 256 + b[++i] - 65536;
				ret.append(g(p));
			}
			else
			{
				ret.append((char)p);
			}
		}
		return ret.toString();
	}


	private void b()
	{
		ht = new Hashtable();
		ht.put(-20319,"a");
		ht.put(-20317,"ai");
		ht.put(-20304,"an");
		ht.put(-20295,"ang");
		ht.put(-20292,"ao");
		ht.put(-20283,"ba");
		ht.put(-20265,"bai");
		ht.put(-20257,"ban");
		ht.put(-20242,"bang");
		ht.put(-20230,"bao");
		ht.put(-20051,"bei");
		ht.put(-20036,"ben");
		ht.put(-20032,"beng");
		ht.put(-20026,"bi");
		ht.put(-20002,"bian");
		ht.put(-19990,"biao");
		ht.put(-19986,"bie");
		ht.put(-19982,"bin");
		ht.put(-19976,"bing");
		ht.put(-19805,"bo");
		ht.put(-19784,"bu");
		ht.put(-19775,"ca");
		ht.put(-19774,"cai");
		ht.put(-19763,"can");
		ht.put(-19756,"cang");
		ht.put(-19751,"cao");
		ht.put(-19746,"ce");
		ht.put(-19741,"ceng");
		ht.put(-19739,"cha");
		ht.put(-19728,"chai");
		ht.put(-19725,"chan");
		ht.put(-19715,"chang");
		ht.put(-19540,"chao");
		ht.put(-19531,"che");
		ht.put(-19525,"chen");
		ht.put(-19515,"cheng");
		ht.put(-19500,"chi");
		ht.put(-19484,"chong");
		ht.put(-19479,"chou");
		ht.put(-19467,"chu");
		ht.put(-19289,"chuai");
		ht.put(-19288,"chuan");
		ht.put(-19281,"chuang");
		ht.put(-19275,"chui");
		ht.put(-19270,"chun");
		ht.put(-19263,"chuo");
		ht.put(-19261,"ci");
		ht.put(-19249,"cong");
		ht.put(-19243,"cou");
		ht.put(-19242,"cu");
		ht.put(-19238,"cuan");
		ht.put(-19235,"cui");
		ht.put(-19227,"cun");
		ht.put(-19224,"cuo");
		ht.put(-19218,"da");
		ht.put(-19212,"dai");
		ht.put(-19038,"dan");
		ht.put(-19023,"dang");
		ht.put(-19018,"dao");
		ht.put(-19006,"de");
		ht.put(-19003,"deng");
		ht.put(-18996,"di");
		ht.put(-18977,"dian");
		ht.put(-18961,"diao");
		ht.put(-18952,"die");
		ht.put(-18783,"ding");
		ht.put(-18774,"diu");
		ht.put(-18773,"dong");
		ht.put(-18763,"dou");
		ht.put(-18756,"du");
		ht.put(-18741,"duan");
		ht.put(-18735,"dui");
		ht.put(-18731,"dun");
		ht.put(-18722,"duo");
		ht.put(-18710,"e");
		ht.put(-18697,"en");
		ht.put(-18696,"er");
		ht.put(-18526,"fa");
		ht.put(-18518,"fan");
		ht.put(-18501,"fang");
		ht.put(-18490,"fei");
		ht.put(-18478,"fen");
		ht.put(-18463,"feng");
		ht.put(-18448,"fo");
		ht.put(-18447,"fou");
		ht.put(-18446,"fu");
		ht.put(-18239,"ga");
		ht.put(-18237,"gai");
		ht.put(-18231,"gan");
		ht.put(-18220,"gang");
		ht.put(-18211,"gao");
		ht.put(-18201,"ge");
		ht.put(-18184,"gei");
		ht.put(-18183,"gen");
		ht.put(-18181,"geng");
		ht.put(-18012,"gong");
		ht.put(-17997,"gou");
		ht.put(-17988,"gu");
		ht.put(-17970,"gua");
		ht.put(-17964,"guai");
		ht.put(-17961,"guan");
		ht.put(-17950,"guang");
		ht.put(-17947,"gui");
		ht.put(-17931,"gun");
		ht.put(-17928,"guo");
		ht.put(-17922,"ha");
		ht.put(-17759,"hai");
		ht.put(-17752,"han");
		ht.put(-17733,"hang");
		ht.put(-17730,"hao");
		ht.put(-17721,"he");
		ht.put(-17703,"hei");
		ht.put(-17701,"hen");
		ht.put(-17697,"heng");
		ht.put(-17692,"hong");
		ht.put(-17683,"hou");
		ht.put(-17676,"hu");
		ht.put(-17496,"hua");
		ht.put(-17487,"huai");
		ht.put(-17482,"huan");
		ht.put(-17468,"huang");
		ht.put(-17454,"hui");
		ht.put(-17433,"hun");
		ht.put(-17427,"huo");
		ht.put(-17417,"ji");
		ht.put(-17202,"jia");
		ht.put(-17185,"jian");
		ht.put(-16983,"jiang");
		 ht.put(-16970,"jiao");
		ht.put(-16942,"jie");
		ht.put(-16915,"jin");
		ht.put(-16733,"jing");
		ht.put(-16708,"jiong");
		ht.put(-16706,"jiu");
		ht.put(-16689,"ju");
		ht.put(-16664,"juan");
		ht.put(-16657,"jue");
		ht.put(-16647,"jun");
		ht.put(-16474,"ka");
		ht.put(-16470,"kai");
		ht.put(-16465,"kan");
		ht.put(-16459,"kang");
		ht.put(-16452,"kao");
		ht.put(-16448,"ke");
		ht.put(-16433,"ken");
		ht.put(-16429,"keng");
		ht.put(-16427,"kong");
		ht.put(-16423,"kou");
		ht.put(-16419,"ku");
		ht.put(-16412,"kua");
		ht.put(-16407,"kuai");
		ht.put(-16403,"kuan");
		ht.put(-16401,"kuang");
		ht.put(-16393,"kui");
		ht.put(-16220,"kun");
		ht.put(-16216,"kuo");
		ht.put(-16212,"la");
		ht.put(-16205,"lai");
		ht.put(-16202,"lan");
		ht.put(-16187,"lang");
		ht.put(-16180,"lao");
		ht.put(-16171,"le");
		ht.put(-16169,"lei");
		ht.put(-16158,"leng");
		ht.put(-16155,"li");
		ht.put(-15959,"lia");
		ht.put(-15958,"lian");
		ht.put(-15944,"liang");
		ht.put(-15933,"liao");
		ht.put(-15920,"lie");
		ht.put(-15915,"lin");
		ht.put(-15903,"ling");
		ht.put(-15889,"liu");
		ht.put(-15878,"long");
		ht.put(-15707,"lou");
		ht.put(-15701,"lu");
		ht.put(-15681,"lv");
		ht.put(-15667,"luan");
		ht.put(-15661,"lue");
		ht.put(-15659,"lun");
		ht.put(-15652,"luo");
		ht.put(-15640,"ma");
		ht.put(-15631,"mai");
		ht.put(-15625,"man");
		ht.put(-15454,"mang");
		ht.put(-15448,"mao");
		ht.put(-15436,"me");
		ht.put(-15435,"mei");
		ht.put(-15419,"men");
		ht.put(-15416,"meng");
		ht.put(-15408,"mi");
		ht.put(-15394,"mian");
		ht.put(-15385,"miao");
		ht.put(-15377,"mie");
		ht.put(-15375,"min");
		ht.put(-15369,"ming");
		ht.put(-15363,"miu");
		ht.put(-15362,"mo");
		ht.put(-15183,"mou");
		ht.put(-15180,"mu");
		ht.put(-15165,"na");
		ht.put(-15158,"nai");
		ht.put(-15153,"nan");
		ht.put(-15150,"nang");
		ht.put(-15149,"nao");
		ht.put(-15144,"ne");
		ht.put(-15143,"nei");
		ht.put(-15141,"nen");
		ht.put(-15140,"neng");
		ht.put(-15139,"ni");
		ht.put(-15128,"nian");
		ht.put(-15121,"niang");
		ht.put(-15119,"niao");
		ht.put(-15117,"nie");
		ht.put(-15110,"nin");
		ht.put(-15109,"ning");
		ht.put(-14941,"niu");
		ht.put(-14937,"nong");
		ht.put(-14933,"nu");
		ht.put(-14930,"nv");
		ht.put(-14929,"nuan");
		ht.put(-14928,"nue");
		ht.put(-14926,"nuo");
		ht.put(-14922,"o");
		ht.put(-14921,"ou");
		ht.put(-14914,"pa");
		ht.put(-14908,"pai");
		ht.put(-14902,"pan");
		ht.put(-14894,"pang");
		ht.put(-14889,"pao");
		ht.put(-14882,"pei");
		ht.put(-14873,"pen");
		ht.put(-14871,"peng");
		ht.put(-14857,"pi");
		ht.put(-14678,"pian");
		ht.put(-14674,"piao");
		ht.put(-14670,"pie");
		ht.put(-14668,"pin");
		ht.put(-14663,"ping");
		ht.put(-14654,"po");
		ht.put(-14645,"pu");
		ht.put(-14630,"qi");
		ht.put(-14594,"qia");
		ht.put(-14429,"qian");
		ht.put(-14407,"qiang");
		ht.put(-14399,"qiao");
		ht.put(-14384,"qie");
		ht.put(-14379,"qin");
		ht.put(-14368,"qing");
		ht.put(-14355,"qiong");
		ht.put(-14353,"qiu");
		ht.put(-14345,"qu");
		ht.put(-14170,"quan");
		ht.put(-14159,"que");
		ht.put(-14151,"qun");
		ht.put(-14149,"ran");
		ht.put(-14145,"rang");
		ht.put(-14140,"rao");
		ht.put(-14137,"re");
		ht.put(-14135,"ren");
		ht.put(-14125,"reng");
		ht.put(-14123,"ri");
		ht.put(-14122,"rong");
		ht.put(-14112,"rou");
		ht.put(-14109,"ru");
		ht.put(-14099,"ruan");
		ht.put(-14097,"rui");
		ht.put(-14094,"run");
		ht.put(-14092,"ruo");
		ht.put(-14090,"sa");
		ht.put(-14087,"sai");
		ht.put(-14083,"san");
		ht.put(-13917,"sang");
		ht.put(-13914,"sao");
		ht.put(-13910,"se");
		ht.put(-13907,"sen");
		ht.put(-13906,"seng");
		ht.put(-13905,"sha");
		ht.put(-13896,"shai");
		ht.put(-13894,"shan");
		ht.put(-13878,"shang");
		ht.put(-13870,"shao");
		ht.put(-13859,"she");
		ht.put(-13847,"shen");
		ht.put(-13831,"sheng");
		ht.put(-13658,"shi");
		ht.put(-13611,"shou");
		ht.put(-13601,"shu");
		ht.put(-13406,"shua");
		ht.put(-13404,"shuai");
		ht.put(-13400,"shuan");
		ht.put(-13398,"shuang");
		ht.put(-13395,"shui");
		ht.put(-13391,"shun");
		ht.put(-13387,"shuo");
		ht.put(-13383,"si");
		ht.put(-13367,"song");
		ht.put(-13359,"sou");
		ht.put(-13356,"su");
		ht.put(-13343,"suan");
		ht.put(-13340,"sui");
		ht.put(-13329,"sun");
		ht.put(-13326,"suo");
		ht.put(-13318,"ta");
		ht.put(-13147,"tai");
		ht.put(-13138,"tan");
		ht.put(-13120,"tang");
		ht.put(-13107,"tao");
		ht.put(-13096,"te");
		ht.put(-13095,"teng");
		ht.put(-13091,"ti");
		ht.put(-13076,"tian");
		ht.put(-13068,"tiao");
		ht.put(-13063,"tie");
		ht.put(-13060,"ting");
		ht.put(-12888,"tong");
		ht.put(-12875,"tou");
		ht.put(-12871,"tu");
		ht.put(-12860,"tuan");
		ht.put(-12858,"tui");
		ht.put(-12852,"tun");
		ht.put(-12849,"tuo");
		ht.put(-12838,"wa");
		ht.put(-12831,"wai");
		ht.put(-12829,"wan");
		ht.put(-12812,"wang");
		ht.put(-12802,"wei");
		ht.put(-12607,"wen");
		ht.put(-12597,"weng");
		ht.put(-12594,"wo");
		ht.put(-12585,"wu");
		ht.put(-12556,"xi");
		ht.put(-12359,"xia");
		ht.put(-12346,"xian");
		ht.put(-12320,"xiang");
		ht.put(-12300,"xiao");
		ht.put(-12120,"xie");
		ht.put(-12099,"xin");
		ht.put(-12089,"xing");
		ht.put(-12074,"xiong");
		ht.put(-12067,"xiu");
		ht.put(-12058,"xu");
		ht.put(-12039,"xuan");
		ht.put(-11867,"xue");
		ht.put(-11861,"xun");
		ht.put(-11847,"ya");
		ht.put(-11831,"yan");
		ht.put(-11798,"yang");
		ht.put(-11781,"yao");
		ht.put(-11604,"ye");
		ht.put(-11589,"yi");
		ht.put(-11536,"yin");
		ht.put(-11358,"ying");
		ht.put(-11340,"yo");
		ht.put(-11339,"yong");
		ht.put(-11324,"you");
		ht.put(-11303,"yu");
		ht.put(-11097,"yuan");
		ht.put(-11077,"yue");
		ht.put(-11067,"yun");
		ht.put(-11055,"za");
		ht.put(-11052,"zai");
		ht.put(-11045,"zan");
		ht.put(-11041,"zang");
		ht.put(-11038,"zao");
		ht.put(-11024,"ze");
		ht.put(-11020,"zei");
		ht.put(-11019,"zen");
		ht.put(-11018,"zeng");
		ht.put(-11014,"zha");
		ht.put(-10838,"zhai");
		ht.put(-10832,"zhan");
		ht.put(-10815,"zhang");
		ht.put(-10800,"zhao");
		ht.put(-10790,"zhe");
		ht.put(-10780,"zhen");
		ht.put(-10764,"zheng");
		ht.put(-10587,"zhi");
		ht.put(-10544,"zhong");
		ht.put(-10533,"zhou");
		ht.put(-10519,"zhu");
		ht.put(-10331,"zhua");
		ht.put(-10329,"zhuai");
		ht.put(-10328,"zhuan");
		ht.put(-10322,"zhuang");
		ht.put(-10315,"zhui");
		ht.put(-10309,"zhun");
		ht.put(-10307,"zhuo");
		ht.put(-10296,"zi");
		ht.put(-10281,"zong");
		ht.put(-10274,"zou");
		ht.put(-10270,"zu");
		ht.put(-10262,"zuan");
		ht.put(-10260,"zui");
		ht.put(-10256,"zun");
		ht.put(-10254,"zuo");
		ht.put(-10247,"zz");

	}



}